//
//  PublicMethod.m
//  WorkManager
//
//  Created by ukongm on 17/1/6.
//  Copyright © 2017年 ukongm. All rights reserved.
//

#import "PublicMethod.h"
#import "math.h"

@implementation PublicMethod

void XFLog(NSString* placeStr, ...){

//    NSMutableString* string = [NSMutableString stringWithString:[obj description]];
    
    va_list args;
    
    //2.va_start(args, str);string为第一个参数，也就是最右边的已知参数,这里就是获取第一个可选参数的地址.使参数列表指针指向函数参数列表中的第一个可选参数，函数参数列表中参数在内存中的顺序与函数声明时的顺序是一致的。
    va_start(args,placeStr);
    
//    if (obj)
//    {
//        //依次取得除第一个参数以外的参数
//        //4.va_arg(args,NSString)：返回参数列表中指针所指的参数，返回类型为NSString，并使参数指针指向参数列表中下一个参数。
//        while (va_arg(args, id))
//        {
//            id otherObj = va_arg(args, id);
//            [string appendString:[otherObj description]];
//        }
//    }
    
    NSLogv(placeStr, args);
    //5.清空参数列表，并置参数指针args无效。
    va_end(args);
}

NSString* XFIntegerToString(NSInteger param){
    
    return [NSString stringWithFormat:@"%ld",param];
    
}

#pragma mark 时间相关

NSString* XFTimestampToString(NSInteger time){
    return XFTimestampFormatterToString(time, @"yyyy-MM-dd");
}


NSString* XFTimestampFormatterToString(NSInteger time,NSString* formatter){
    
    NSDate* date = [[NSDate alloc] initWithTimeIntervalSince1970:time];
    
    return XFStringForDate(date, formatter);
}

NSString* XFStringForDate(NSDate* date,NSString* formatter){
    NSDateFormatter* matter = [NSDateFormatter new];
    matter.dateFormat = formatter;
    return [matter stringFromDate:date];
}

NSDate* XFDateForString(NSString* timeStr,NSString* formatter){
    NSDateFormatter* matter = [NSDateFormatter new];
    matter.dateFormat = formatter;
    return [matter dateFromString:timeStr];
}



#pragma mark 计算文字相关

CGSize XFMathSizeForString(NSString* value,CGSize conditionSize,UIFont* font){
    CGSize size = [value boundingRectWithSize:conditionSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil].size;
    
    return size;
}

#pragma mark sub - 花式计算

/**
 根据圆的一些信息，计算圆上点的位置
 
 @param center 圆的中心点
 @param radius 圆的半径
 @param angle  角度
 
 @return 对应圆上的点
 */
CGPoint XFMathPointForCircleCenter(CGPoint center,CGFloat radius,CGFloat angle){
    CGFloat x = cos(angle) * radius + center.x;
    CGFloat y = sin(angle) * radius + center.y;
    
    return CGPointMake(x, y);
}

#pragma mark - 富文本
NSAttributedString* XFAttributedStringForString(NSString* value,NSInteger index,NSString* imageName,CGRect bounds){
    NSMutableAttributedString* string = [[NSMutableAttributedString alloc] initWithString:value];
    NSTextAttachment* ment = [NSTextAttachment new];
    ment.image = [UIImage imageNamed:imageName];
    if (bounds.size.width == 0 || bounds.size.height == 0) {
        bounds.size.width = ment.image.size.width;
        bounds.size.height = ment.image.size.height;
    }
    
    ment.bounds = bounds;
    
    NSAttributedString* temp = [NSAttributedString attributedStringWithAttachment:ment];
    [string insertAttributedString:temp atIndex:index];
    
    return string;
}

#pragma mark - 文件相关
NSData* XFLimitLenthForImage(UIImage* image,CGFloat limit){
    
    NSData* data = UIImageJPEGRepresentation(image, 1);
    
    CGFloat dataLenght = data.length/1024.0/1024.0; //得到数据的M单位大小
    NSData* resultData = nil;
    if (dataLenght > limit) {
        
//        CGFloat scale = limit/dataLenght;
        
        
    }
    
    return resultData;
}

@end
